/*
FieldSurface.cpp
FieldSurface Implementaion file
Zach Agudelo, Andi Cescolini, Sam Tarin

All things drawn to screen must use this to load bmps and allow them to be drawn to the screen
Most of the base graphics and SDL functions for drawing bmps is here
Field class has all the surface objects in its private
*/

#include "FieldSurface.h"
 
FieldSurface::FieldSurface() {
}
 
SDL_Surface* FieldSurface::OnLoad(char* File) {
    SDL_Surface* Surf_Temp = NULL;
    SDL_Surface* Surf_Return = NULL;
 
    if((Surf_Temp = SDL_LoadBMP(File)) == NULL) {
        return NULL;
    }
 
//    Surf_Return = SDL_DisplayFormatAlpha(Surf_Temp);
//    SDL_FreeSurface(Surf_Temp);
 
    return Surf_Temp;
}
 // draws the full surface
bool FieldSurface::OnDraw(SDL_Surface* Surf_Dest, SDL_Surface* Surf_Src, int X, int Y) {
    if(Surf_Dest == NULL || Surf_Src == NULL) {
        return false;
    }
 
    SDL_Rect DestR;
 
    DestR.x = X;
    DestR.y = Y;
 
    SDL_BlitSurface(Surf_Src, NULL, Surf_Dest, &DestR);
 
    return true;
}

//draws the wanted section of the surface
bool FieldSurface::OnDraw(SDL_Surface* Surf_Dest, SDL_Surface* Surf_Src, int X, int Y, int X2, int Y2, int W, int H) {
    if(Surf_Dest == NULL || Surf_Src == NULL) {
        return false;
    }
 
    SDL_Rect DestR;
 
    DestR.x = X;
    DestR.y = Y;
 
    SDL_Rect SrcR;
 
    SrcR.x = X2;
    SrcR.y = Y2;
    SrcR.w = W;
    SrcR.h = H;
 
    SDL_BlitSurface(Surf_Src, &SrcR, Surf_Dest, &DestR);
 
    return true;
}
//makes white transparent
bool FieldSurface::Transparent(SDL_Surface* Surf_Dest, int R, int G, int B){
      if(Surf_Dest== NULL){
         return false;
      }
      SDL_SetColorKey(Surf_Dest, SDL_SRCCOLORKEY | SDL_RLEACCEL, SDL_MapRGB(Surf_Dest ->format, R, G, B)); //using SDL_MapRGB to create a color, matches it to your color as closely as possible 
      return true;
}
